﻿#define _CRT_SECURE_NO_WARNINGS 1


//#include <iostream>
//#include <vector>
//#include <algorithm>
//using namespace std;
//bool compare(int x, int y)
//{
//    return x > y;
//}
//int main()
//{
//    int n = 0;
//    int count = 0;
//    cin >> n;
//    vector<int> v(n);
//    for (int i = 0; i < n; i++)
//    {
//        cin >> v[i];
//    }
//    sort(v.begin(), v.end(), compare);
//    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
//    {
//        count += *it;
//        int x = *it;
//        vector<int>::iterator itt = it + 1;
//        while (itt != v.end())
//        {
//            if (*itt + 1 == x)
//            {
//                itt = v.erase(itt);
//
//            }
//            else
//            {
//                itt++;
//            }
//        }
//    }
//    cout << count << endl;
//    return 0;
//}


//#include <iostream>
//#include <vector>
//#include <set>
//using namespace std;
//int v[10009];
//long long solve(vector<int>& v2, int i, vector<long long>& dp)
//{
//    //递归
//    if (dp[i] != 0)
//    {
//        return dp[i];
//    }
//    if (i == 0)
//    {
//        dp[i] = v2[i] * v[v2[i]];
//    }
//    else 
//    {
//        if (v2[i] - v2[i - 1] == 1)
//        {
//            dp[i] = max(solve(v2, i - 1, dp),
//                i == 1 ? v2[i] * v[v2[i]] : v2[i] * v[v2[i]] + solve(v2, i - 2, dp));
//        }
//        else
//        {
//            dp[i] = solve(v2, i - 1, dp) + v2[i] * v[v2[i]];
//        }
//    }
//    return dp[i];
//}
//long long solve2(vector<int>& v2, vector<long long>& dp) 
//{
//    //递推
//    dp[0] = v2[0] * v[v2[0]];
//    for (int i = 1; i < v2.size(); ++i) 
//    {
//        //如果前后两值之差为一，那只能选其一。
//        if (v2[i] - v2[i - 1] == 1) 
//        {
//            dp[i] = max(dp[i - 1], i == 1 ? v2[i] * v[v2[i]] :
//            v2[i] * v[v2[i]] + dp[i - 2]);
//        }
//        else
//        {
//            dp[i] = dp[i - 1] + v2[i] * v[v2[i]];
//        }
//    }
//    return dp[v2.size() - 1];
//}
//int main() 
//{
//    int n;
//    cin >> n;
//    set<int> st;
//    for (int i = 0; i < n; ++i) 
//    {
//        int tmp;
//        cin >> tmp;
//        v[tmp]++;
//        st.insert(tmp);
//    }
//    vector<int> v2;
//    for (auto i : st) 
//    {
//        v2.push_back(i);
//    }
//    vector<long long> dp(v2.size());
//    long long ans;
//    ans = solve2(v2, dp);
//    cout << ans << endl;
//    return 0;
//}
